<template>
    <div class="timing">
      <el-row style="margin-bottom:10px;display: none;">
        <el-col :span="24">
          <el-form :inline="true" :model="formInline" class="demo-form-inline queryFrom">
            <el-form-item label="key">
              <el-input v-model="formInline.dataModelName" clearable placeholder="请输入数据库名称" />
            </el-form-item>
            <el-form-item>
              <el-button plain @click="getUserList"><Icon type="ios-search" />查询</el-button>
            </el-form-item>
          </el-form>
        </el-col>
      </el-row>
      <!-- 按钮 -->
      <el-row style="margin-bottom:10px;">
        <el-col :span="24">
          <el-button type="primary" @click="addUser('add')"><Icon type="md-add" />创建字典管理</el-button>
        </el-col>
      </el-row>
      <!-- 表格 -->
      <admincentertb ref="httbRef" :btn-is-show="btnIsShow" :table-col="tabUserList" :table-data="tableUserData"
      @getDataDetileInfo="getDataDetileInfo"
       @deleteSelectData="deleteSelectData" @refresh="getUserList" />
      <!-- 分页 -->
      <div style="text-align:right;margin-top:10px;display: none;">
        <el-pagination
          :current-page="page"
          :page-sizes="[10, 20, 30, 40]"
          :page-size="size"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
      </div>
  
      <el-dialog :close-on-click-modal="false" :title="title" width="50%" :visible.sync="dialogTableVisible">
        <!-- 名称和路径必输 -->
        <el-form v-if="dialogTableVisible" ref="ruleForm" :model="ruleForm" :rules="rules" label-width="150px" class="demo-ruleForm autoClass">
          
          <el-form-item label="名称" prop="jsonTitle">
            <el-input :disabled="disFlag" v-model="ruleForm['jsonTitle']" clearable placeholder="" />
          </el-form-item>
          <el-form-item label="编码" prop="code">
            <el-input :disabled="disFlag" v-model="ruleForm['code']" clearable placeholder="" />
          </el-form-item>
          <el-form-item label="父节点id" prop="pid">
            <el-cascader
              popper-class="default-scrollbar__wrap"
              style="width: 100%;"
              v-model="ruleForm['pid']"
              :props="cascaderProp3"
              :options="tableUserData"
            ></el-cascader>
          </el-form-item>
          <el-form-item label="排序" prop="sort">
            <el-input :disabled="disFlag" v-model="ruleForm['sort']" clearable placeholder="" />
          </el-form-item>
        </el-form>
        <div style="text-align: center;">
          <el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
          <el-button @click="resetForm('return')">返回</el-button>
        </div>
      </el-dialog>
    </div>
  </template>
  
  <script>
  import { dictreeList,dicadd, dicremove,dicupdate
  } from '@/api/home_/adminCenter'
  import experiment from '@/mixins/experiment'
  export default {
    components: {},
    mixins: [experiment],
    data() {
      return {
        cascaderoptions: [],
        cascaderProp3: {
          value: 'id',
          label: 'jsonTitle',
          children: 'children',
          checkStrictly: true,
        },
        elradioOptionsa:[],
        defaultProps: {
          children: 'children',
          label: 'label'
        },
        ruleForm2:{
  
        },
        btnIsShow: {
          operate: true,
          detile: true,
          del: true
        },
        defaultProps: {
          children: 'children',
          label: 'label'
        },
        title: '新增',
        rules: {
        },
        dialogTableVisible: false,
        ruleForm: {
            "children": [],
            "code": "",
            "id": "",
            "jsonTitle": "",
            "pid": "",
            "sort": 0
        },
        userId: '',
        formInline: {
          'dataModelName': '',
          'dataModelTypeId': ''
        },
        addParms: [],
        addParms2: [],
        tableUserData: [],
        fullscreenLoading:false,
        tabUserList: [
          {
            key: 'jsonTitle',
            title: '名称'
          },
          {
            key: 'code',
            title: '编码'
          },
          {
            key: 'pid',
            title: '父节点id'
          }
        ],
        total: 0,
        size: 10,
        page: 1
      }
    },
    created() {
  
    },
    mounted() {
      this.$nextTick(() => {
        this.getUserList()
      })
    },
    methods: { 
      deleteSelectData(v) {
        dicremove(v.id).then(res => {
          if (res.code == 200) {
            this.getUserList()
          } else {
            this.errorDialog(res.msg)
          }
        })
      },
      handleNodeClick(data) {
        console.log(data)
      }, 
      commitFromData() {
        let pns = JSON.parse(JSON.stringify(this.ruleForm))
        if(Array.isArray(pns.pid)){
          pns.pid = pns.pid[pns.pid.length-1]
        }
        if(this.title=='新增'){
          dicadd(pns).then(res => {
            if (res.code == 200) {
              this.getUserList()
              this.$message.success(res.msg)
            } else {
              this.errorDialog(res.msg)
            }
          })
        }else{
          dicupdate(pns).then(res => {
            if (res.code == 200) {
              this.getUserList()
            } else {
              this.errorDialog(res.msg)
            }
          })
        }
      },
      handleSizeChange(v) {
        this.size = v
        this.getUserList()
      },
      handleCurrentChange(v) {
        this.page = v
        this.getUserList()
      },
  
      // 获取用户列表
      getUserList() {
        this.dialogTableVisible = false
        this.$refs.httbRef.isShowLoading(true)
        dictreeList({}).then(res => {
          this.tableUserData = res.data
          this.total = res.data.total
          this.$refs.httbRef.isShowLoading(false)
        })
      }
    }
  }
  </script>
  
  <style lang="scss" scoped>
    @import "~@/assets/styles/auto.scss";
        .info{
          margin-top: 20px;
        }
        .info>p{
          padding:4px 0;
          margin-left:80px;
          display: flex;
          flex-direction: row;
          justify-content: space-between;
        }
        .info>p:nth-child(1){
          color: #474747;
          font-weight: bold;
          background: #f1f4f7;
          padding-left: 0px;
        }
        .info>p>label{
          display: inline-block;
          width:35%;
        }
        .info>p>span{
          color:#494949;padding: 2px 4px;
          border-radius: 2px;font-size: 12px;
          background: #f0f0f0;
        }
      .ztree {
          margin-left:80px;
          border:1px solid #efefef;
          padding: 4px;
          border-radius: 2px;
          min-height: 270px;
          height: 300px;
          overflow-y: scroll;
      }
      .resoceDialog{
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: space-between;
      }
      .resoceDialog>div>p{
        color: #464646;
        padding: 10px 0;
        font-weight: bold;
        // background: #f1f4f7;
        margin-left:26px;
        padding-left:0px;
        margin-bottom: 5px;
        text-align: right;
      }
        >>>.jsoneditor-poweredBy {
          display: none !important;
        }
  
        .addPs{
          display: flex;
          flex-direction: row;
          margin-bottom: 10px;
          >div{
            width:50%
          }
          span{
            display: inline-block;
            width: 10%;
          }
        }
        .autoClass{
          display: flex;
          flex-direction: row;
          flex-wrap: wrap;
        }
        .autoClass .el-form-item{
          width:50%;
        }
        .addcs{
          display: flex;
          flex-direction: row;
          margin-bottom: 10px;
        }
        .addcs2 .el-select {
          display: inline-block;
          width: 240px;
        }
        .autoInput{
          display: inline-block;
          width: 70%;
        }
        .infoTitle{
          border-bottom:1px solid #e5e5e5;
          margin-bottom: 30px;
          position: relative;
        }
        .infoTitle>span{
          position: absolute;
          left: 20px;
          background: #fff;
          width:80px;
          top:-15px;
          height:30px;
          text-align: center;
          line-height: 30px;
        }
          .el-select{
             width:100%;
          }
          .timing{
            background:#fff;
            padding:20px;
          }
        </style>
  